package Grafo;

import Exceptions.ArestaNulaException;




public class Aresta  implements Comparable<Object> {
	private Vertice origem;
	private Vertice destino;
	private int peso;

        
        
	
	public Aresta(Vertice origem, Vertice destino, int peso) throws ArestaNulaException {
		this.setNos(origem, destino);
		this.setPeso(peso);
               
               
        }
	
	public Vertice getOrigem() {
		return this.origem;
	}
	
	public Vertice getDestino(){
		return this.destino;
	}
	
	public int getPeso() {
		return this.peso;
	}
	
	public void setPeso(int peso) {
		this.peso = peso;
	}
	
	public void setNos(Vertice origem, Vertice destino) throws ArestaNulaException {
		if (origem == null || destino == null){
			return;
		}
		if (origem.compareTo(destino) == 0) {
			return;
		}
		this.origem = origem;
		this.destino = destino;
		//ADICIONA A ARESTA NO NO ORIGEM E NO DESTINO
		this.origem.adicionarAresta(this);
		this.destino.adicionarAresta(this);
	}
	
	//VERIFICA SE DUAS ARESTAS SAO EQUIVALENTES
	public int compareTo(Object obj) {
		if (obj == null){
			return -1;
		}
		if (obj instanceof Aresta) {
			Aresta other = (Aresta) obj;
			
			if ((this.origem.compareTo(other.getOrigem()) == 0 && this.destino.compareTo(other.getDestino()) == 0) ||
				(this.origem.compareTo(other.getDestino()) == 0 && this.destino.compareTo(other.getOrigem()) == 0)){
				return 0;
			}
			return -1;
		} else {
			return -1;
		}
	}
	
	public boolean equals(Object obj) {
		return this.compareTo(obj) == 0;
	}
}
